package com.itheima.Work;

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;


/**
 * @author Zhang_Han
 * @version 1.0
 * @date 2020/7/10 20:18
 */
public class Work_001 {
    public static void main(String[] args) throws IOException {
        /*
        1. 将 sanguo.txt 的文本文件读取并逐行打印（utf-8编码，不需要考虑乱码问题）建议使用 BufferedReader 完成
        2. 将上一步读取的结果封装为 Hero 对象（可以用之前作业中写过的 Hero 类，无需重复编写）
           * 将 Hero 对象进行筛选，将所有【男性】武将写入到【男.txt】，【女性】武将写入到【女.txt】
           * 将 Hero 对象进行筛选，将所有武力高于 85 的武将，按高低排序，并写入到【85.txt】
           * 将 Hero 对象进行筛选，统计各个地区的武将人数，并写入到【count.txt】
             * 南皮 10人
             * 平原 6人
             * 云南 16人
             * ...
         */

        //1. 将 sanguo.txt 的文本文件读取并逐行打印（utf-8编码，不需要考虑乱码问题）建议使用 BufferedReader 完成
        BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\97622\\Desktop\\ROBIN\\sanguo.txt"));
        ArrayList<Hero> list = new ArrayList<>();
        String line;
        while ((line = br.readLine()) != null) {
            //System.out.println(line);
            //将上一步读取的结果封装为 Hero 对象（可以用之前作业中写过的 Hero 类，无需重复编写）
            String[] s = line.split(" ");
            for (int i = 0; i < s.length; i++) {
                String s1 = s[i];
                //System.out.println(s1);
                String[] s2 = s1.split("\t");
                Hero hero = new Hero();
                hero.setId(Integer.parseInt(s2[0]));
                hero.setName(s2[1]);
                hero.setLocation(s2[2]);
                hero.setSex(s2[3]);
                hero.setBirth(Integer.parseInt(s2[4]));
                hero.setDeath(Integer.parseInt(s2[5]));
                hero.setStrengtf(Integer.parseInt(s2[6]));
                list.add(hero);
            }
        }
        //System.out.println(list);
        br.close();
        //将 Hero 对象进行筛选，将所有【男性】武将写入到【男.txt】，【女性】武将写入到【女.txt】;
        BufferedWriter bw1 = new BufferedWriter(new FileWriter("demo_IO\\男.txt"));
        BufferedWriter bw2 = new BufferedWriter(new FileWriter("demo_IO\\女.txt"));
        BufferedWriter bw3 = new BufferedWriter(new FileWriter("demo_IO\\85.txt"));
        for (int i = 0; i < list.size(); i++) {
            Hero hero = list.get(i);
            if (hero.getSex().equals("男")) {
                bw1.write(hero.toString());
                bw1.newLine();
            }
        }
        for (Hero hero : list) {
            if (hero.getSex().equals("女")) {
                bw2.write(hero.toString());
                bw2.newLine();
            }
        }
        //将 Hero 对象进行筛选，将所有武力高于 85 的武将，按高低排序，并写入到【85.txt】
        for (Hero hero : list) {
            if (hero.getStrengtf() >= 85) {
                bw3.write(hero.toString());
                bw3.newLine();
            }
        }
        //将 Hero 对象进行筛选，统计各个地区的武将人数，并写入到【count.txt】
        BufferedWriter bw4 = new BufferedWriter(new FileWriter("demo_IO\\count.txt"));
        HashMap<String, Integer> map = new HashMap<>();
        for (int i = 0; i < list.size(); i++) {
            Hero hero = list.get(i);
            String location = hero.getLocation();
            if (map.containsKey(location)) {
                map.put(location, map.get(location) + 1);
            } else {
                map.put(location, 1);

            }
        }
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            bw4.write(key + "  " + value);
            bw4.newLine();
        }
        bw1.close();
        bw2.close();
        bw3.close();
        bw4.close();
    }
}
